package com.github.kristofa.brave.scribe; import static org.junit.Assert.assertEquals; import com.github.kristofa.brave.SpanId; import com.github.kristofa.brave.internal.InternalSpan; import java.util.List; import org.apache.thrift.transport.TTransportException; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import com.twitter.zipkin.gen.BinaryAnnotation; import com.twitter.zipkin.gen.Span; public class ScribeSpanCollectorTest { static { InternalSpan.initializeInstanceForTests(); } private static final int PORT = 9500; private static final String KEY1 = "key1"; private static final String VALUE1 = "value1"; Span span = InternalSpan.instance.toSpan(SpanId.builder().traceId(1).spanId(2).build()); private static ScribeServer scribeServer; @BeforeClass public static void beforeClass() throws TTransportException { scribeServer = new ScribeServer(PORT); scribeServer.start(); } @AfterClass public static void afterClass() { scribeServer.stop(); } @Before public void setup() { scribeServer.clearReceivedSpans(); } @Test(expected = IllegalArgumentException.class) public void testZipkinSpanCollector() { new ScribeSpanCollector("", PORT); } @Test public void testCollect() throws TTransportException { final ScribeSpanCollector scribeSpanCollector = new ScribeSpanCollector("localhost", PORT); try { scribeSpanCollector.collect(span); } finally { scribeSpanCollector.close(); } final List<Span> serverCollectedSpans = scribeServer.getReceivedSpans(); assertEquals(1, serverCollectedSpans.size()); assertEquals(span.getId(), serverCollectedSpans.get(0).getId()); assertEquals(span.getTrace_id(), serverCollectedSpans.get(0).getTrace_id()); } @Test public void testCollectWithDefaultAnnotation() throws TTransportException { final ScribeSpanCollector scribeSpanCollector = new ScribeSpanCollector("localhost", PORT); scribeSpanCollector.addDefaultAnnotation(KEY1, VALUE1); try { scribeSpanCollector.collect(span); } finally { scribeSpanCollector.close(); } final List<Span> serverCollectedSpans = scribeServer.getReceivedSpans(); assertEquals(1, serverCollectedSpans.size()); final Span span = serverCollectedSpans.get(0); assertEquals(this.span.getId(), span.getId()); assertEquals(this.span.getTrace_id(), span.getTrace_id()); final List<BinaryAnnotation> binary_annotations = span.getBinary_annotations(); assertEquals("Expect default annotation to have been submitted.", 1, binary_annotations.size()); final BinaryAnnotation binaryAnnotation = binary_annotations.get(0); assertEquals(KEY1, binaryAnnotation.getKey()); assertEquals(VALUE1, new String(binaryAnnotation.getValue())); } }